Basic認証を越える方法
- 2010 年 2月 27 日
前回エントリーの際に、Basic認証越えを試した時のメモ。
Basic認証を越える方法は、FLASH-JP.COM – フォーラム にスレッドが有名だと思います。
検索するとこれをAS3に置き換えた方法が沢山あったのですが、試してみて気づいたところがあります。それは送信メソッドがPOSTじゃないと認証されなかったことです。
例えば、以下だとリクエストヘッダで認証できませんでした。Base64エンコーダーはFlex SDKにインストールされているものを使っています。
var encoder:Base64Encoder = new Base64Encoder(); encoder.encodeUTFBytes( "ユーザー名" : "パスワード" ); var header:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString() ); var req:URLRequest = new URLRequest( "リクエストURL" ); req.requestHeaders.push( header ); navigateToURL( req ); |
こう書き直したら認証されるようになりました。
var encoder:Base64Encoder = new Base64Encoder(); encoder.encodeUTFBytes( "ユーザー名" : "パスワード" ); var header:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString() ); var req:URLRequest = new URLRequest( "リクエストURL" ); req.requestHeaders.push( header ); req.method= URLRequestMethod.POST; req.data = {}; navigateToURL( req ); |
変わっていることは、送信メソッドにPOSTを指定したことと、dataに空オブジェクトを加えたこと。リファレンスによれば、methodを指定してもdataが無いと自動的にGETで処理されるとあり、でダミーの値を入れておく必要があるようだ。ちなみにdataにオブジェクトを入れて、methodをGETにした場合も認証されませんでした。